package szxy.base.day06;

import java.util.Scanner;

/*
      某个公司采用公用电话传递数据信息，数据是小于8位的整数，为了确保安全。
      在传递过程中需要加密，加密规则如下：
           首先将数据倒序，然后每位数字都加上5，再用和除以10的余数代替该数字，
           最后将第一位和最后一位数字交换。请给定一个小于8位的整数，然后把加密后的结果在控制台打印出来



       //分析：
             1、导包  import java.util.Scanner
             2、创建键盘录入对象
             3、创建一个长度为7的int类型的数组
             4、循环输入每一个数字，最多7次，自己定义一个标志，当输入-1的时候表示结束输入
             5、以输入的次数创建一个新的数组，将输入的数据放入到新数组中
             6、逆序
             7、然后每位数字都加上5，再用和除以10的余数代替该数字
             8、第一位和最后一位数字交换
             9、遍历数组

 */
public class JiaMidemo6 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        //创建一个长度为7的int类型的数组
        int[] arr=new int[7];

        int count=0;
        //循环输入数字，最多7次
        for(int i=0;i<7;i++){
            System.out.println("请输入第"+(i+1)+"个数字");
            int number=sc.nextInt();
            if(number==-1){
                break;
            }
            //若不是-1就赋值给数组中的元素
            arr[i]=number;
            count++;
        }

        //如果不满足7位怎么办
        //根据输入的次数创建对应元素长度的数组
        int[] arr2=new int[count];

        //遍历旧数组，将元素添加到新数组中
        for(int i=0;i<count;i++){
            arr2[i]=arr[i];
        }

        System.out.println("处理后的新数组为：");
        printIntArray(arr2);
        System.out.println("加密前：");
        System.out.println(arrayToStr(arr2));

        System.out.println("-------------------------------------------");

        //6、逆序
        int[] resArr=niXu2(arr2);
        System.out.println("逆序后：");
        printIntArray(resArr);

        //7、然后每位数字都加上5，再用和除以10的余数代替该数字
        for (int i = 0; i < resArr.length; i++) {
            resArr[i]=(resArr[i]+5)%10;
        }
        System.out.println("加5取余后：");
        printIntArray(resArr);

        //8、第一位和最后一位数字交换
        int tmp=resArr[0];
        resArr[0]=resArr[resArr.length-1];
        resArr[resArr.length-1]=tmp;
        System.out.println("第一位和最后一位交换后：");
        printIntArray(resArr);



        //9、遍历数组
        System.out.println("加密后的号码：");
        System.out.println(arrayToStr(resArr));


    }
    /*
        编写：将数组元素拼接成一个字符串返回
     */
    public static String arrayToStr(int[] arr) {
        String s=" ";
        for(int i=0;i<arr.length;i++){
            s+=arr[i];
        }
        return s;
    }


    //将逆序2的功能封装成一个方法：定义指针的格式
    public static int[] niXu2(int[] arr) {
        for(int start=0,end=arr.length-1;start<end;start++,end--){
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
        return arr;
    }

    //将输出的int类型的数组功能封装成一个方法
    public static void printIntArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            if (i == 0) {
                System.out.print("[" + array[i] + ",");
            } else if (i == array.length - 1) {
                System.out.print(array[i] + "]");
            } else {
                System.out.print(array[i] + ",");
            }
        }
        //换行
        System.out.println();
    }


}
